草庐IT

c++ - GLSL : Replace large uniform int array with buffer or texture

全部标签

java - 我可以在 OpenGL ES 2.0 中使用哪些版本的 GLSL?

尽管搜索了数小时,但我似乎无法找到明确的答案。有人可以告诉我发生了什么吗?我收到诸如“不支持版本140”之类的错误消息。这是我的设备(KindleFire)还是GLES2.0?我需要添加库吗? 最佳答案 OpenGLES2.0spec指GLSLES,与GLSL不同。规范GLSLES规范说:Thisversionofthelanguageisbasedonversion1.10ofthedesktopGLSL.Howeveritincludesanumberoffeaturesthatareinversion1.20butnot1.1

OPENGL ES 2.0 知识串讲 (6)——GLSL 语法(IV)

上节回顾更多音视频知识请关注公众号:进击的代码家上面两节,主要讲解了GLSL中变量和函数的定义语法和使用语法,现在我们可以在shader中自定义一些我们所需要用到的变量和函数。但是在shader中,还存在着一些内置的变量和函数。这些变量主要是用于将Shader计算得到的值传给GPU,完成Shader在Pipeline中的功能。由于我们使用shader的目的就是为了把所需要的值传给GPU,所以这些变量对我们非常重要。Shader中内置的函数也非常重要,就好比C语言中的printf一样,把我们想要使用到的功能用一个函数来包装起来,这样我们就可以更加方便的处理我们传入的参数,以得到我们想要得到的结果

与glsl中的采样缓冲器相关的功能

我正在使用以下内容编写计算着色器:layout(set=0,binding=1)uniformhighpsamplerBufferu_texelBuffer;并尝试使用以下命令来获取voidmain(void){highpvec4result_color;result_color=texelFetch(u_texelBuffer,6);}我可以使用其他功能而不是texelFetch。因为texelFetch在页面错误中结果。看答案缓冲纹理只能通过texelFetch功能家族。如果您遇到页面故障,赔率很好,那是因为您没有做某事。使用Vulkan验证层找出您做错了什么。

ios - OpenGL ES - GLSL 返回计算

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭10年前。我正在尝试使用GPU为iPhone创建面部跟踪器以执行性能计算。为了使跟踪更加智能,我需要能够从着色器中检索值。但是我很难这样做,iPhoneOpenGLES可以吗?

ios - GLSL 边框着色器

我正在尝试编写一个着色器来为文本添加边框。它编译并运行正常,但边界是颗粒状的并且有锯齿。请问有什么改进的建议吗?这是我编写的第一个着色器,因此对API了解不多。请评论任何示例代码吗?我不想只是复制并粘贴答案;我想了解一下。此外,当我将文本变小时,我遇到了一个问题,这张图片可以很好地解释这一点。请问有什么解决这个问题的建议吗?边缘检测也可以更好。到目前为止,我利用了这样一个事实,即我用于输入的抗锯齿纹理具有0.0的边缘。到目前为止我有这个:#ifdefGL_ESprecisionmediumpfloat;#endifvaryingvec2v_texCoord;uniformsampler

ios - iPhone 6 Plus 上的 GLSL atan 给出了错误的结果

考虑以下片段着色器。当我在模拟器或iPhone5(8.3)上运行它时,它会显示预期的颜色(红色)。如果我在iPhone6Plus(8.2)上运行它,它会转到第二个if子句(绿色),这显然是错误的,因为正确的计算结果应该在1.22左右。如果我直接提供atan参数作为编译时常量,则计算有效。我在最新的Xcode6.2和最新的6.3Beta上都试过了。voidmain(){highpfloaty=0.57;highpfloatx=0.21;highpfloata=atan(y,x);//worksifchangedtoatan(0.57,0.21);//doesnotworkifchange

c++ - glsl - 片段着色器(模糊)-> 黑屏

过去几天我一直在努力让它发挥作用,但我真的开始变得绝望了。如果您有任何建议,我将不胜感激。我一直在努力做的事情:将场景渲染到FBO使用glsl着色器模糊附加的纹理将生成的纹理渲染到屏幕对齐的四边形问题:如果我启用片段着色器(水平模糊),我会在第一帧左右得到一个模糊的图像渲染到我的四边形,之后它全黑了。我怀疑我将纹理传递给我的着色器的方式有问题:horizontalBlurVertex.enable();horizontalBlurFragment.enable();glActiveTexture(GL_TEXTURE0);glBindTexture(GL_TEXTURE_2D,fboT

c++ - openGL/GLSL : bloom/blur, 渲染到 FBO

我又遇到了一个我自己似乎无法解决的僵局。我真的希望有人能帮助我。我一直在尝试使用GLSL创建一个漂亮的小光晕效果,效果非常好。当我尝试在我的场景中加入一些移动的东西时,我注意到我忘记在渲染到它们之前清除我的FBO。没有清除它适用于从不改变场景,因为我总是使用相同的纹理。随着glClear();命令它仍然有效,但仅对于第一帧,之后我得到的只是黑屏。所以我想我的问题是我无法让我的FBO在每一帧都持续更新。我觉得我要么遗漏了一些非常明显的东西,要么做了一些非常错误的事情。如果您有任何建议,我将不胜感激。这是我得到的第一帧:来源:(使用开放框架)设置:voidtestApp::setup(){

c++ - GLSL 着色器不适用于 AMD/ATI,但适用于 NVIDIA

我有一个非常奇怪的问题我不能pindown几天了。我正在制作一个简单的逐顶点照明,它在Nvidia上工作正常,但不会渲染任何带有灯光阴影的内容AMD/ATI.我找到了与属性有关的问题-特别是颜色属性。这是我的顶点着色器:#version140uniformmat4modelViewProjectionMatrix;invec3in_Position;//(x,y,z)invec4in_Color;//(r,g,b,a)invec2in_TextureCoord;//(u,v)outvec2v_TextureCoord;outvec4v_Color;uniformboolen_Color

c++ - 通过在 GLSL 中为不同的屏幕区域着色来识别 mip 映射级别

我不想用代码轰炸这篇文章。我有一个主文件、片段着色器和一个顶点着色器文件。我需要知道根据mipmap级别为屏幕着色应该采取的步骤?IE。循环应该去哪里询问mipmap级别,然后相应地设置颜色。我不知道在哪里或如何实现这个,一个简单的例子就足够了,非常感谢。 最佳答案 您应该为每个级别创建一个具有不同颜色的纹理,然后在您的片段程序中检索该颜色。也可以使用dFdx(texcoord.x)和dFdy(texcoord.y)来计算它。 关于c++-通过在GLSL中为不同的屏幕区域着色来识别mip